package com.sudo.sso.server.api.h5;


import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.sso.util.SaSsoConsts;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(("/ss/sso"))
public class H5Controller {

    /**
     * 获取 redirectUrl
     */
    @GetMapping("/getRedirectUrl")
    public SaResult getRedirectUrl(String redirect, String mode, String client) {
        // 未登录情况下，返回 code=401
        if(!StpUtil.isLogin()) {
            return SaResult.code(401).setMsg("请先登录");
        }
        // 已登录情况下，构建 redirectUrl
        if(SaSsoConsts.MODE_SIMPLE.equals(mode)) {
            // 模式一
            SaSsoUtil.checkRedirectUrl(SaFoxUtil.decoderUrl(redirect));
            return SaResult.data(redirect);
        } else {
            // 模式二或模式三
            String redirectUrl = SaSsoUtil.buildRedirectUrl(StpUtil.getLoginId(), client, redirect);
            return SaResult.data(redirectUrl);
        }
    }
}
